package domain;

import java.util.Date;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Entity;
import javax.persistence.Index;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;

import org.hibernate.validator.constraints.NotBlank;
import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Access(AccessType.PROPERTY)
@Table( indexes = {@Index(columnList = "tipo")} )
public class Acta extends DomainEntity {

	private Date fecha;
	private String decisiones;
	private String tipo;

	public Acta() {
		super();
	}

	@NotNull
	@Past
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	@NotBlank
	public String getDecisiones() {
		return decisiones;
	}

	public void setDecisiones(String decisiones) {
		this.decisiones = decisiones;
	}

	@NotBlank
	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	// Relaciones
	private ComunidadDeVecinos comunidadDeVecinos;
	private Reunion reunion;
	private Vecino vecinoMoroso;

	@Valid
	@NotNull
	@ManyToOne(optional = false)
	public ComunidadDeVecinos getComunidadDeVecinos() {
		return comunidadDeVecinos;
	}

	public void setComunidadDeVecinos(ComunidadDeVecinos comunidadDeVecinos) {
		this.comunidadDeVecinos = comunidadDeVecinos;
	}

	@Valid
	@NotNull
	@ManyToOne(optional = false)
	public Reunion getReunion() {
		return reunion;
	}

	public void setReunion(Reunion reunion) {
		this.reunion = reunion;
	}

	@Valid
	@ManyToOne
	public Vecino getVecinoMoroso() {
		return vecinoMoroso;
	}

	public void setVecinoMoroso(Vecino vecinoMoroso) {
		this.vecinoMoroso = vecinoMoroso;
	}

}
